// 模块的固定写法：暴露一个对象，对象里可以有这个模块的state、mutations、actions、getters

export default {
  // 开启命名空间
  namespaced: true,
  // 子模块里的state是一个函数，函数里return一个对象
  state () {
    return {
      // 这里是声明数据的地方
      // 购物车数据
      cartList: [
        { id: 1, name: '可爱多', price: 5}
      ]
    }
  },

  mutations: {
    setCartList (state, list) {
      state.cartList = list
    },

    fn1 () {
      console.log('cart模块里的fn1')
    }
  },

  actions: {
    reqCartList (ctx) {
      // 购物车应该发请求获取
      setTimeout(() => {
        // 假设res是服务器返回的数组
        const res = [
          { id: 1, name: '皮鞋', price: 9.9 },
          { id: 2, name: '凉鞋', price: 7699 },
          { id: 3, name: '外套', price: 2399 },
          { id: 4, name: '斜挎包', price: 17900 }
        ]

        ctx.commit('setCartList', res)
      }, 1000)
    }
  },

  getters: {
    totalPrice (state) {
      return state.cartList.reduce((sum, v) => (sum += v.price), 0)
    }
  }
}
